perm filename SETRUL.DOC[226,JMC] blob
sn#005415 filedate 1972-06-23 generic text, type T, neo UTF8
00100 EXPLICIT SETS
00200
00300
00400 An additional type of constant recognized by PCHECK is the
00500 explicit set. An explicit set is given as a list of its members and
00600 is written SET(a,b,...,c). An example is
00700
00800 SET(A,X,SET(A,C),'(A B)).
00900
01000 The following commands apply to sets:
01100
01200 1. ISSET(u)
01300 If u has the above form, a line is generating asserting
01400
01500 ISSET(u).
01600
01700 The elements of the list are required to meet the conditions for
01800 terms. It is not immediately clear to me whether they have to be
01900 constants or whether terms containing variables are allowed.
02000
02100 2. MEMBER(x,u)
02200
02300 If u has the form of a set and x has the form of an
02400 individual and if x occurs in u, then a line is generated asserting
02500 xεu.
02600
02700 3. PICK(u)
02800
02900 If u is SET(a,b,...c),then PICK(u) generates a line asserting
03000
03100 aεu.
03200
03300 4. EQUAL(u,v)
03400
03500 If the lists of elements of u and v contain the same
03600 elements, then the new line is
03700
03800 u=v.
03900
04000 Note that we cannot assert u≠v except in special cases because
04100 expressions that are apparently different may be later proved equal.
04200
04300 5. UNION(u,v)
04400
04500 This command forms the union w of the two sets and generates
04600 a line asserting
04700
04800 u∪v=w.
04900
05000 Note that intersection, set difference, and cardinality
05100 commands are not possible unless it is possible to test the equality
05200 of elements of the sets. This is possible for sets of quoted
05300 S-expressions which are guaranteed to be distinct if they appear to
05400 be distinct.